<?php
namespace app\model\system;

use app\model\BaseModel;

/**
 * IP黑名单模型
 */
class SecurityIpBlacklist extends BaseModel
{
    // 设置当前模型对应的完整数据表名称（无需前缀，系统会自动加上配置的前缀）
    protected $name = 'security_ip_blacklist';

    // 设置主键名
    protected $pk = 'id';

    // 设置字段信息
    protected $schema = [
        'id' => 'int',
        'ip_address' => 'string',
        'reason' => 'string',
        'expire_time' => 'int',
        'create_time' => 'int',
        'update_time' => 'int',
    ];

    // IP地址搜索器
    public function searchIpAddressAttr($query, $value)
    {
        $query->where('ip_address', 'like', '%' . $value . '%');
    }

    // 检查IP是否被黑名单
    public static function isBlacklisted($ip)
    {
        return self::where('ip_address', $ip)
            ->where(function ($query) {
                $query->where('expire_time', 0)
                    ->whereOr('expire_time', '>', time());
            })
            ->find();
    }
}